﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CasaBella.Entities;
using CasaBella.BL;
using Microsoft.Practices.Unity;

namespace CasaBella.UI
{
    public partial class FrmModelo : Form
    {
        [Dependency]
        public IModeloBicicletaBL mBiciBL { get; set; }

        [Dependency]
        public IModeloColchonBL mColcBL { get; set; }

        [Dependency]
        public IModeloImportadoBL mImportBL { get; set; }

        [Dependency]
        public IModeloMuebleBL mMuebleBL { get; set; }

        [Dependency]
        public IModeloOtrosBL mOtrosBL { get; set; }

        public FrmModelo()
        {
            InitializeComponent();
            this.BuilUp();
        }

        bool xtendBici;
        bool xtendColc;
        bool xtendImport;
        bool xtendMueb;
        bool xtendOtros;

        public void XtendBici()
        {
            xtendBici = true;
        }
        public void XtendColc()
        {
            xtendColc = true;
        }
        public void XtendImport()
        {
            xtendImport = true;
        }
        public void XtendMueb()
        {
            xtendMueb = true;
        }
        public void XtendOtros()
        {
            xtendOtros = true;
        }

        private void FrmModelo_Load(object sender, EventArgs e)
        {
            cargaData();
        }

        public void cargaData()
        {
            mODELO_BICICLETABindingSource.DataSource = mBiciBL.GetAllFromModeloBicicleta();
            mODELO_COLCHONBindingSource.DataSource = mColcBL.GetAllFromModeloColchon();
            mODELO_IMPORTADOBindingSource.DataSource = mImportBL.GetAllFromModeloImportado();
            mODELO_MUEBLEBindingSource.DataSource = mMuebleBL.GetAllFromModeloMueble();
            mODELO_OTROSBindingSource.DataSource = mOtrosBL.GetAllFromModeloOtros();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (tabControl1.SelectedTab == tabBicicleta)
            {
                mODELO_BICICLETABindingSource.DataSource = mBiciBL.GetAllFromModeloBicicletaByCriterio(TxtCriterio.Text);
                if (mODELO_BICICLETABindingSource.Count == 0)
                {
                    MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabColchon)
            {
                mODELO_COLCHONBindingSource.DataSource = mColcBL.GetAllFromModeloColchonByCriterio(TxtCriterio.Text);
                if (mODELO_COLCHONBindingSource.Count == 0)
                {
                    MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabImportado)
            {
                mODELO_IMPORTADOBindingSource.DataSource = mImportBL.GetAllFromModeloImportadoByCriterio(TxtCriterio.Text);
                if (mODELO_IMPORTADOBindingSource.Count == 0)
                {
                    MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabMueble)
            {
                mODELO_MUEBLEBindingSource.DataSource = mMuebleBL.GetAllFromModeloMuebleByCriterio(TxtCriterio.Text);
                if (mODELO_MUEBLEBindingSource.Count == 0)
                {
                    MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabOtros)
            {
                mODELO_OTROSBindingSource.DataSource = mOtrosBL.GetAllFromModeloOtrosByCriterio(TxtCriterio.Text);
                if (mODELO_OTROSBindingSource.Count == 0)
                {
                    MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void TxtCriterio_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (tabControl1.SelectedTab == tabBicicleta)
                {
                    mODELO_BICICLETABindingSource.DataSource = mBiciBL.GetAllFromModeloBicicletaByCriterio(TxtCriterio.Text);
                    if (mODELO_BICICLETABindingSource.Count == 0)
                    {
                        MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (tabControl1.SelectedTab == tabColchon)
                {
                    mODELO_COLCHONBindingSource.DataSource = mColcBL.GetAllFromModeloColchonByCriterio(TxtCriterio.Text);
                    if (mODELO_COLCHONBindingSource.Count == 0)
                    {
                        MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (tabControl1.SelectedTab == tabImportado)
                {
                    mODELO_IMPORTADOBindingSource.DataSource = mImportBL.GetAllFromModeloImportadoByCriterio(TxtCriterio.Text);
                    if (mODELO_IMPORTADOBindingSource.Count == 0)
                    {
                        MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (tabControl1.SelectedTab == tabMueble)
                {
                    mODELO_MUEBLEBindingSource.DataSource = mMuebleBL.GetAllFromModeloMuebleByCriterio(TxtCriterio.Text);
                    if (mODELO_MUEBLEBindingSource.Count == 0)
                    {
                        MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (tabControl1.SelectedTab == tabOtros)
                {
                    mODELO_OTROSBindingSource.DataSource = mOtrosBL.GetAllFromModeloOtrosByCriterio(TxtCriterio.Text);
                    if (mODELO_OTROSBindingSource.Count == 0)
                    {
                        MessageBox.Show("Modelo no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            FrmMttoModelo frm = new FrmMttoModelo();
            frm.NuevaModelo();
            frm.ShowDialog();
            cargaData();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            var mBici = mODELO_BICICLETABindingSource.Current as MODELO_BICICLETA;
            var mColc = mODELO_COLCHONBindingSource.Current as MODELO_COLCHON;
            var mImport = mODELO_IMPORTADOBindingSource.Current as MODELO_IMPORTADO;
            var mMueble = mODELO_MUEBLEBindingSource.Current as MODELO_MUEBLE;
            var mOtros = mODELO_OTROSBindingSource.Current as MODELO_OTROS;

            if (tabControl1.SelectedTab == tabBicicleta)
            {
                if (mBici != null)
                {
                    FrmMttoModelo frm = new FrmMttoModelo();
                    frm._modeloBici = mBici;
                    frm.EditarModelo();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabColchon)
            {
                if (mColc != null)
                {
                    FrmMttoModelo frm = new FrmMttoModelo();
                    frm._modeloColc = mColc;
                    frm.EditarModelo();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabImportado)
            {
                if (mImport != null)
                {
                    FrmMttoModelo frm = new FrmMttoModelo();
                    frm._modeloImport = mImport;
                    frm.EditarModelo();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabMueble)
            {
                if (mMueble != null)
                {
                    FrmMttoModelo frm = new FrmMttoModelo();
                    frm._modeloMueble = mMueble;
                    frm.EditarModelo();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabOtros)
            {
                if (mOtros != null)
                {
                    FrmMttoModelo frm = new FrmMttoModelo();
                    frm._modeloOtros = mOtros;
                    frm.EditarModelo();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            var mBici = mODELO_BICICLETABindingSource.Current as MODELO_BICICLETA;
            var mColc = mODELO_COLCHONBindingSource.Current as MODELO_COLCHON;
            var mImport = mODELO_IMPORTADOBindingSource.Current as MODELO_IMPORTADO;
            var mMueble = mODELO_MUEBLEBindingSource.Current as MODELO_MUEBLE;
            var mOtros = mODELO_OTROSBindingSource.Current as MODELO_OTROS;

            if (tabControl1.SelectedTab == tabBicicleta)
            {
                if (mBici != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar el Modelo: " + mBici.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mBiciBL.DeleteModeloBicicleta(mBici.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabColchon)
            {
                if (mColc != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar el Modelo: " + mColc.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mColcBL.DeleteModeloColchon(mColc.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabImportado)
            {
                if (mImport != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar el Modelo: " + mImport.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mImportBL.DeleteModeloImportado(mImport.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabMueble)
            {
                if (mMueble != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar el Modelo: " + mMueble.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mMuebleBL.DeleteModeloMueble(mMueble.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabOtros)
            {
                if (mOtros != null)
                {
                    var rpt = MessageBox.Show(this,
                    string.Format("¿Desea Eliminar el Modelo: " + mOtros.Descripcion + "?"),
                    "Mensaje",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
                    if (rpt == DialogResult.Yes)
                    {
                        mOtrosBL.DeleteModeloOtros(mOtros.Id);
                        cargaData();
                    }
                }
                else
                {
                    MessageBox.Show("Debe seleccionar una Modelo.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void TxtCriterio_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar) || Char.IsNumber(e.KeyChar) || Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        public MODELO_BICICLETA currentModeloBici { get; set; }
        private void mODELO_BICICLETARadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendBici == true)
            {
                currentModeloBici = mODELO_BICICLETABindingSource.Current as MODELO_BICICLETA;
                this.Close();
            }
        }

        public MODELO_COLCHON currentModeloColc { get; set; }
        private void mODELO_COLCHONRadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendColc == true)
            {
                currentModeloColc = mODELO_COLCHONBindingSource.Current as MODELO_COLCHON;
                this.Close();
            }
        }

        public MODELO_IMPORTADO currentModeloImport { get; set; }
        private void mODELO_IMPORTADORadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendImport == true)
            {
                currentModeloImport = mODELO_IMPORTADOBindingSource.Current as MODELO_IMPORTADO;
                this.Close();
            }
        }

        public MODELO_MUEBLE currentModeloMueb { get; set; }
        private void mODELO_MUEBLERadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendMueb == true)
            {
                currentModeloMueb = mODELO_MUEBLEBindingSource.Current as MODELO_MUEBLE;
                this.Close();
            }
        }

        public MODELO_OTROS currentModeloOtros { get; set; }
        private void mODELO_OTROSRadGridView_DoubleClick(object sender, EventArgs e)
        {
            if (xtendOtros == true)
            {
                currentModeloOtros = mODELO_OTROSBindingSource.Current as MODELO_OTROS;
                this.Close();
            }
        }
    }
}
